home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1996 March / EnigmA AMIGA RUN 05 (1996)(G.R. Edizioni)(IT)[!][issue 1996-03][Skylink CD IV].iso / earcd / comm1 / exclutls.lha / Comments / Loadfile.s < prev   
Text File  |  1996-01-28  |  967b  |  61 lines

  1. *INPUTS
  2. *    A0    Filename to load
  3. *    A1    Mem start space
  4. *    A2    Mem size space
  5. *
  6. *RESULTS
  7. *    D0    Zero for success or -1 for failure
  8. *
  9. *********************************************************************
  10. LoadFile:    Moveq    #-1,D6        fail at value
  11.     Move.L    A1,A3        swap mem start
  12.  
  13.     Move.L    A0,D1
  14.     Move.L    #MODE_OLDFILE,D2
  15.     CALLPCDOS    Open
  16.     Move.L    D0,A4
  17.     Tst.L    D0
  18.     Beq.S    .FailedOpening
  19.  
  20.     Move.L    D0,D1
  21.     Moveq    #0,D2
  22.     Moveq    #OFFSET_END,D3
  23.     CALL    Seek
  24.     Cmp.L    #-1,D0
  25.     Beq.S    .FailedSeek
  26.  
  27.     Move.L    A4,D1
  28.     Moveq    #0,D2
  29.     Moveq    #OFFSET_BEGINNING,D3
  30.     CALL    Seek
  31.     Cmp.L    #-1,D0
  32.     Beq.S    .FailedSeek
  33.     Move.L    D0,(A2)
  34.  
  35.     Moveq    #0,D1
  36.     CALLPCEXEC    AllocMem
  37.     Move.L    D0,(A3)
  38.     Tst.L    D0
  39.     Beq.S    .FailedSeek
  40.  
  41.     Move.L    A4,D1        file
  42.     Move.L    (A3),D2        buffer
  43.     Move.L    (A2),D3        length
  44.     CALLPCDOS    Read
  45.     Move.L    (A2),D1
  46.     Sub.L    D0,D1
  47.     Bne.S    .FailedLoading
  48.  
  49.     Moveq    #0,D6
  50.     Bra.S    .FailedSeek
  51.  
  52. .FailedLoading    Move.L    (A3),A1
  53.     Move.L    (A2),D0
  54.     CALLPCEXEC    FreeMem
  55.  
  56. .FailedSeek    Move.L    A4,D1
  57.     CALLPCDOS    Close
  58.  
  59. .FailedOpening    Move.L    D6,D0
  60.     Rts
  61.